package com.dt.app.modules.sys.vo;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.Version;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.dt.app.modules.base.entites.PageEntity;
/**
 * <p>
 * 
 * </p>
 *
 * @author 鸿源塔基
 * @since 2023-02-22
 */
@Data
@NoArgsConstructor
@ApiModel(value="SysParameter对象", description="")
public class SysParameterBean extends PageEntity implements Serializable {

    private static final long serialVersionUID=45656867813408L;

    @ApiModelProperty(value = "id")
    private Integer sysParameterId;

    @ApiModelProperty(value = "企业id")
    private Integer sysCompanyId;

    @ApiModelProperty(value = "名称")
    private String parameterName;

    @ApiModelProperty(value = "内容 男=1,女=2")
    private String dataValue;

    @ApiModelProperty(value = "类型 1单选框  2复选框 3下拉框 4输入框 5文本框 6富文本输入域")
    private Integer dataType;

    @ApiModelProperty(value = "备注")
    private String msg;

    @ApiModelProperty(value = "编码")
    private String numb;

    @ApiModelProperty(value = "排序")
    private Integer seq;

    @ApiModelProperty(value = "键值对")
    private List<SysParameterNameValue> nameValues;

    @ApiModelProperty(value = "值类型")
    private int kvType=1;//1键值对：红色=1,白色=2,黑色=3     2值：红色,白色,黑色

    /**
     * 初始化键值对列表
     */
    public void initKV(){
        int dt=dataType.intValue();
        if(dt==4 || dt==5 || dt==6)return;
        if(dataValue!=null) {
            nameValues = new ArrayList();
            String[] names=null;
            String[] values=null;
            try{
                names = dataValue.split(",");
                values = new String[names.length];
                if(dataValue.contains("=")) {
                    kvType=1;
                    for(int i=0 ; i<names.length; i++) {
                        String[] nvs = names[i].split("=");
                        names[i] = nvs[0];
                        values[i] = nvs[1];
                    }
                }else{
                    kvType = 2;
                    values = names;// name == value
                }
                for(int i=0 ; i<names.length; i++) {
                    SysParameterNameValue spnv=new SysParameterNameValue(names[i],values[i]);
                    nameValues.add(spnv);
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }

    /**
     * 获取名称
     * @param value
     * @return
     */
    public String initGetName(String value){
        if(nameValues==null)initKV();
        if(nameValues!=null && nameValues.size()>0){
            for (SysParameterNameValue nv:nameValues) {
                if (value.equals(nv.getValue())) {
                    return nv.getName();
                }
            }
        }
        return "";
    }
    /**
     * 把 值返回， 用于列表页展示
     */
    public void initToGetValue(){
        int dt=dataType.intValue();
        if(dt==4 || dt==5 || dt==6)return;//类型 1单选框  2复选框 3下拉框 4输入框 5文本框 6富文本输入域
        if(nameValues!=null && nameValues.size()>0){
            StringBuffer sb = new StringBuffer("");
            if(kvType==1){//1键值对   2值
                for (SysParameterNameValue nv:nameValues){
                    if(sb.length()>1) sb.append(",");
                    sb.append(nv.getName()+"="+nv.getValue());
                }
            }else{
                for (SysParameterNameValue nv:nameValues){
                    if(sb.length()>1) sb.append(",");
                    sb.append(nv.getValue());
                }
            }
            dataValue = sb.toString();
        }else{
            dataValue = "";
        }
    }
}